package anr.desu.pmo.common.action;

import java.util.List;
import java.util.Map;
import anr.desu.pmo.common.service.SeguridadService;
import anr.desu.pmo.proyecto.model.Empleado;
import anr.desu.pmo.proyecto.model.Proyecto;
import anr.desu.pmo.proyecto.model.Usuario;
import anr.desu.pmo.proyecto.service.RegistroProyectoService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

	private static final long serialVersionUID = 1L;
	private Usuario usuario;
	private Usuario detalleUsuario;
	private String cuenta;
	private String clave;
	private String mensaje;
	private List<Proyecto> proyectos;
	private SeguridadService service;
	private RegistroProyectoService service2;
	
	public LoginAction(){
		service = new SeguridadService();
		service2 = new RegistroProyectoService();
	}
	
	public String execute(){
		String retorno="exitosa";
		try{
			usuario=service.validarUsuario(cuenta, clave);
			detalleUsuario = service.consultarDetUsuario(cuenta);
			Empleado detalleUsuarioEmpleado = service.consultarDetUsuarioEmpleado(detalleUsuario.getIdusuario());
			Map session=ActionContext.getContext().getSession();
			session.put("usuario", detalleUsuario);
			session.put("usuarioEmpleado", detalleUsuarioEmpleado);
			proyectos=service2.consultarProyectos();
		}catch(Exception ex){
			mensaje = ex.getMessage();
			retorno="noexitosa";
		}
		return retorno;
	}

	public void validate() {
		if(cuenta!=null && cuenta.length()==0){
				addFieldError("cuenta",getText("login.cuenta.required"));
		}
		if(clave!=null && clave.length()==0){
				addFieldError("clave", getText("login.clave.required"));
		}
	}
	
	public String killSession(){
		Map session = ActionContext.getContext().getSession();
		session.remove("logged-in");
		return SUCCESS;
	}
	
	public String getCuenta() {
		return cuenta;
	}

	public void setCuenta(String cuenta) {
		this.cuenta = cuenta;
	}

	public String getClave() {
		return clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	public List<Proyecto> getProyectos() {
		return proyectos;
	}

	public void setProyectos(List<Proyecto> proyectos) {
		this.proyectos = proyectos;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Usuario getDetalleUsuario() {
		return detalleUsuario;
	}

	public void setDetalleUsuario(Usuario detalleUsuario) {
		this.detalleUsuario = detalleUsuario;
	}
	
}